A nonvolatile ROM (Read Only Memory) has been conventionally used as a write-once memory or a memory having an extremely low rewrite frequency such as a firmware memory. Furthermore, differently from a volatile RAM (Random Access Memory), the nonvolatile ROM can be regarded as a memory capable of robustly protecting internal programs and data from user's inadvertent rewriting or rewriting due to operation system and application system operations.
On the other hand, the development of a nonvolatile RAM (MRAM (Magnetic Random Access Memory)) using resistive change elements, a PCRAM (Phase Change Random Access Memory), a ReRAM (Resistive Random Access Memory), and the like has been underway in recent years. For example, when these nonvolatile RAMs include DDR (Double Data Rate) interfaces and enable high-speed writing, these can be used not only as memories having low rewrite frequencies such as a firmware memory but also as a nonvolatile large-capacity working memory. Therefore, attention is paid to these nonvolatile RAMs as memories each of which can replace both the existing nonvolatile ROM and existing volatile RAM.
However, the nonvolatile RAMs described above have the following problems. That is, when one of the nonvolatile RAMs is used to replace both the existing nonvolatile ROM and existing volatile RAM, there is still a risk that the programs and data within the nonvolatile RAM are rewritten by user's inadvertence or by operation system and application system operations. Therefore, for nonvolatile RAMs, there is still a need to robustly protect programs and data that are necessary to be protected from undesired rewriting.